package org.example.test;// 导入必要的类

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
import java.util.Random;

public class EmailSender {

    public static void main(String[] args) {

        // 设置邮件服务器属性
        Properties properties = new Properties();
        properties.put("mail.smtp.host", "smtp.qq.com"); // 设置邮件服务器主机名
        properties.put("mail.smtp.port", "587"); // 设置邮件服务器端口号  ofjpygccwbkhbfeb

        properties.put("mail.smtp.auth", "true"); // 启用身份验证
        properties.put("mail.smtp.starttls.enable", "true"); // 启用 TLS
        properties.put("mail.smtp.ssl.protocols", "TLSv1.2");
        //properties.put("mail.smtp.socketFactory.port", "465"); // 设置 SSL 端口
        //properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); // 设置 SSL Socket Factory
        //properties.put("mail.smtp.socketFactory.fallback", "false"); // 禁用 SSL 回退

        // 创建会话对象
        Session session = Session.getInstance(properties, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("545623290@qq.com", "ofjpygccwbkhbfeb");
                // 在这里填写发送邮件的邮箱地址和密码/授权码
            }
        });

        try {
            // 创建邮件消息
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("545623290@qq.com")); // 设置发件人邮箱
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("3169612276@qq.com")); // 设置收件人邮箱
            message.setSubject("java项目博客论坛用户注册"); // 设置邮件主题
            String s = getRandomString(6);
            System.out.println(s);
            message.setText("注册验证码："); // 设置邮件内容

            // 发送邮件
            Transport.send(message);

            System.out.println("邮件发送成功！"); // 打印成功信息

        } catch (MessagingException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
    }

    // 生成 随机数的 登录验证方法
    public static String getRandomString(int length) {
        String str = "";
        StringBuffer sb = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }
}

